package ClassExercise;

public class SubClass  extends Father implements InterfaceC{
    public static void main(String[] args) {
        //父类的引用指向子类的对象----多态
        Father clazz = new SubClass();
        //下边要用到哦
        SubClass clazz1=null;
        String subInfo = "我是子类";
        String subInfo1="但是我能调用父类的方法哦";
        System.out.println(subInfo+clazz.showFatherInFo()+subInfo1);
        System.out.println("*************");
        System.out.println("由于多态性的特点,clazz虽然是new SubClass()但是却无法调用自己的方法,所以必须向下转型");
        if(clazz instanceof SubClass){
             clazz1 = (SubClass) clazz;
        }else {
            //如果不是属于子类类型的 就没必要再执行方法了
            return;
        }
        //此时才可以调用子类中声明的方法,子类有的方法而父类中没有声明,就无法调用,但子类中若重写了父类声明的方法则调用时是调用子类的,
        clazz1.a();
        clazz1.b();
        clazz1.c();



    }
    //重写的方法
    public void a() {
        System.out.println("虽然我实现了InterfaceC,但InterfaceC是实现InterfaceA的,所以我实现了InterfaceA中定义的规范哦");
    }

    public void b() {
        System.out.println("虽然我实现了InterfaceC,但InterfaceC是实现InterfaceB的,所以我实现了InterfaceB中定义的规范哦");
    }
    public void c(){
        System.out.println("我实现了InterfaceC中的规范哦");
    }
}
